home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 126-150 / disk_147 / sys / prime / prime.zoo / varargs.h.ins. < prev   
Text File  |  1988-07-25  |  1KB  |  38 lines

  1. /* varargs.h.ins.cc  -- varargs for both 32ix and 64v mode C unser primos */
  2. /* 02/22/87 Robert Larson  Cleanup  (Variable name changes to avoid conflicts) */
  3.  
  4. #ifdef __CI
  5. /* varargs.h for 32ix mode on a Prime 9955 */
  6. /* Modified from the Primix varargs.h by James M Synge. */
  7. typedef char *va_list;
  8.  
  9. #define va_alist       _va_arg1
  10. #define va_dcl           char va_alist;
  11. #define va_start(list) list = ((va_list)(&_va_arg1))
  12. #define va_end(list)
  13.  
  14. #define va_arg(list,mode)    ((mode *)((list) += sizeof(mode)))[-1]
  15.  
  16. #else
  17.  
  18. typedef int **va_list;
  19. extern short *stackptr$();
  20.  
  21. #define va_alist \
  22.     /* first argument at SB%+45 */ \
  23.     _v0,_v1,_v2,_v3,_v4,_v5,_v6,_v7,_v8,_v9,_v10, \
  24.     _v11,_v12,_v13,_v14,_v15,_v16,_v17,_v18,_v19,_v20, \
  25.     _v21,_v22,_v23,_v24,_v25,_v26,_v27,_v28,_v29,_v30, \
  26.     _v31,_v32,_v33,_v34,_v35,_v36,_v37,_v38,_v39,_v40, \
  27.     _v41,_v42,_v43,_v44,_v45,_v46,_v47,_v48,_v49,_v50, \
  28.     _v51,_v52,_v53,_v54,_v55,_v56,_v57,_v58,_v59,_v60, \
  29.     _v61,_v62,_v63,_v64,_v65,_v66,_v67,_v68,_v69
  30.  
  31. #define va_dcl int *_v0;
  32. #define va_start(list) list = ((va_list)(stackptr$() + 042))
  33. #define va_end(list)
  34. #define va_arg(list, mode) ( (sizeof(mode) == sizeof(char *)) ? \
  35.                  ((**(mode **)((list)++)))    : \
  36.                  ((mode) (**((list)++))) )
  37. #endif
  38.